package pe.gob.foncodes.ssa.ws;

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import pe.gob.foncodes.ssa.ws.bean.ActualizaPregSecretaResult;
import pe.gob.foncodes.ssa.ws.bean.AutenticarUsuarioResult;
import pe.gob.foncodes.ssa.ws.bean.AutorizarUsuarioResult;
import pe.gob.foncodes.ssa.ws.bean.CambiarContraseniaResult;
import pe.gob.foncodes.ssa.ws.bean.CerrarSesionResult;
import pe.gob.foncodes.ssa.ws.bean.ConfirmarIdentidadResult;
import pe.gob.foncodes.ssa.ws.bean.ContactarAdministradorResult;
import pe.gob.foncodes.ssa.ws.bean.ListarPregSecretaResult;
import pe.gob.foncodes.ssa.ws.bean.ObtenerParametrosResult;
import pe.gob.foncodes.ssa.ws.bean.OlvidoContraseniaResult;

@WebService
public interface SistemaSeguridadWS {

    @WebMethod(operationName = "AutenticarUsuario")
    public AutenticarUsuarioResult AutenticarUsuario(@WebParam(name
            = "codigoUsuario") String codigoUsuario,
            @WebParam(name = "password") String password,
            @WebParam(name = "nidModulo") String nidModulo) throws Exception;
    
    @WebMethod(operationName = "CambiarContrasenia")
    public CambiarContraseniaResult CambiarContrasenia(@WebParam(name = "nidUsuario") long nidUsuario,
            @WebParam(name = "contraseniaAnterior") String contraseniaAnterior,
            @WebParam(name = "contraseniaNueva") String contraseniaNueva,
            @WebParam(name = "verificaContraseniaNueva") String verificaContraseniaNueva);

    @WebMethod(operationName = "OlvidoCambiarContrasenia")
    public CambiarContraseniaResult OlvidoCambiarContrasenia(@WebParam(name = "nidUsuario") long nidUsuario,
            @WebParam(name = "contraseniaNueva") String contraseniaNueva,
            @WebParam(name = "verificaContraseniaNueva") String verificaContraseniaNueva);
    
    @WebMethod(operationName = "ListarPreguntaSecreta")
    public ListarPregSecretaResult ListarPreguntaSecreta();

    @WebMethod(operationName = "ActualizarPreguntaSecreta")
    public ActualizaPregSecretaResult ActualizarPreguntaSecreta(@WebParam(name = "nidUsuario") Long nidUsuario,
            @WebParam(name = "nidPreguntaSecreta") Long nidPreguntaSecreta,
            @WebParam(name = "respuestaPreguntaSecreta") String respuestaPreguntaSecreta) throws Exception ;

    @WebMethod(operationName = "OlvidoContrasenia")
    public OlvidoContraseniaResult OlvidoContrasenia(@WebParam(name = "codigoUsuario") String codigoUsuario);

    @WebMethod(operationName = "ConfirmarIdentidad")
    public ConfirmarIdentidadResult ConfirmarIdentidad(@WebParam(name = "nidUsuario") Long nidUsuario,
            @WebParam(name = "nidPreguntaSecreta") Long nidPreguntaSecreta,
            @WebParam(name = "nroDocId") String nroDocId,
            @WebParam(name = "fechaNacimiento") String fechaNacimiento,
            @WebParam(name = "respuestaPreguntaSecreta") String respuestaPreguntaSecreta) throws Exception;

    @WebMethod(operationName = "ContactarAdministrador")
    public ContactarAdministradorResult ContactarAdministrador(@WebParam(name = "codigoUsuario") String codigoUsuario,
            @WebParam(name = "motivoContacto") String motivoContacto);

    @WebMethod(operationName = "AutorizarUsuario")
    public AutorizarUsuarioResult AutorizarUsuario(@WebParam(name = "nidUsuario") long nidUsuario,
            @WebParam(name = "nidModulo") String nidModulo, @WebParam(name = "nidUnidadTerritorial") String codZonal) throws Exception;

    @WebMethod(operationName = "CerrarSesion")
    public CerrarSesionResult CerrarSesion(@WebParam(name = "codigoUsuario") String codigoUsuario, 
            @WebParam(name = "nidModulo") String nidModulo, 
            @WebParam(name = "nIdCtrlAccesoWeb") String nIdCtrlAccesoWeb) throws Exception;
    
    @WebMethod(operationName = "ObtenerParametrosGenerales")
    public ObtenerParametrosResult obtenerParametrosGenerales(@WebParam(name = "dominio") String sDominio) throws Exception;
    
}
